// let obj = {
//     name:'model',
//     age:20,
//     gir:'woman'
// }
// // obj.age=18
// // obj.girl=woman
// // delete obj.gir
// // console.log(obj)

// let fn = function(){}

// fn()

//    let age =21 //整数
//    let price =123.333//浮点数
//    let nan=NaN//非数字

//    let name1 = 'zzh'
//    let myname = `我的名字是 ${name1}` // 模板字符串

//    let istrue = true
//    let isfalse = false

//    let x;          // 声明但未赋值
//    console.log(x); // undefined


//    let empty = null; // 表示空值或空对象指针



//    let sym1 = Symbol("id")
//    let sym2 = Symbol("id")
//    console.log(sym1 === sym2) // 运行后会输出false，因为每个Symbol都是唯一的



//   let bignumber = 123456789012345678901234567890n;
//   let bigint = BigInt("9007199254740991"); // 超出Number安全范围


//   let person = {
//     name: 'zzh',
//     age: 21,
//     isStudent: true
// }




//   let fruits = ["苹果", "香蕉", "橙子"];
//   let numbers = [1, 2, 3, 4, 5];



// function sayHello(name) {
//     return `Hello, ${name}!`;
// }

// // 函数表达式
// const multiply = function(a, b) {
//     return a * b;
// };

// // 箭头函数
// const add = (a, b) => a + b;




// function wordprint(age){

// let name1='zzh'
// console.log(name1)
// console.log(age)
// }
// wordprint(21)


// // 不同类型的值有不同的操作
// let number = 42;
// number + 10;        // 数字类型可以进行数学运算，而其它类型，诸如字符串类型等其它类型不可进行数学运算

// let string = "hello";
// string.toUpperCase(); // 字符串类型有字符串方法，而其它类型被禁止使用字符串方法

// let array = [1, 2, 3];
// array.push(4);      // 数组类型有数组方法，而其它类型被禁止使用数组方法


// let str = "hello";
// let num = 123;

// // 字符串特有的操作
// console.log(str.length)        // 5
// console.log(str.slice(1, 3));  // "el"

// // 数字特有的操作
// console.log(num*2);   // "123.00"
// console.log(num+1)    // "123"

// // 类型不匹配会导致错误或意外行为
// console.log(str * 2)        // NaN
// console.log(num.toUpperCase()) // TypeError




// //原始类型 - 存储在栈中，直接存储值
// let a = 10    // 内存中直接存储数字10
// let b = a     // 创建值的副本

// // 引用类型 - 存储在堆中，存储引用地址
//  let obj1 = { name: "zzh" } // 存储对象的内存地址
//  let obj2 = obj1            // 复制的是地址，不是对象本身


// // // 不同类型在运算时的转换规则不同
// // console.log("5" + 3)      // "53" 字符串连接
// // console.log("5" - 3)     // 2    数字减法
// // console.log(true + 1)    // 2    布尔转数字

// // 只有字符串有字符串方法
// "hello".toUpperCase();  // 正常工作
// 123.toUpperCase();      // TypeError

// // 只有数组有数组方法
// [1,2,3].push(4);       // 正常工作
// "hello".push(4);       // TypeError



// //运算符的行为取决于操作数类型
// console.log(1 + 2);        // 得到3 (数字加法)
// console.log("1" + "2");    // 得到"12" (字符串连接)
// console.log(1 + "2");      // 得到"12" (数字转字符串后连接)
// let arr=[1]
// arr.pop()
// console.log(arr)
// function maxOperations(s) {
//     let operations = 0;
//     let i = 0;
//     const n = s.length;
    
//     while (i < n) {
//         if (s[i] === '1') {
//             // 找到这个1后面连续的0的数量，直到遇到1或结尾
//             let zeros = 0;
//             let j = i + 1;
//             while (j < n && s[j] === '0') {
//                 zeros++;
//                 j++;
//             }
            
//             if (zeros > 0) {
//                 operations += zeros;
//                 // 移动这个1到0序列的末尾
//                 // 实际上我们不需要真正修改字符串，只需要计数
//             }
            
//             // 跳过连续的1，因为只有最左边的1能移动
//             while (i < n && s[i] === '1') {
//                 i++;
//             }
//         } else {
//             i++;
//         }
//     }
    
//     return operations;
// }
// console.log(maxOperations("1001101")); // 应该输出4
// console.log(maxOperations("010010"));  // 应该输出4  
// console.log(maxOperations("1010"));    // 应该输出3